# import psycopg2
# from openai import OpenAI

# client = OpenAI(
#     api_key="sk-EAowBiUyHVRJu4f8vgiPB2O8Uv2ejy8qwhVI7BwjPXDLrZrp",
#     base_url="https://api.chatanywhere.tech/v1"
# )

# # 数据库连接参数
# connection_params = {
#     'dbname': 'imdb_database',
#     'user': 'postgres',
#     'password': '0818',
#     'host': 'localhost',
#     'port': '5432'
# }

# def connect_to_db(params):
#     try:
#         connection = psycopg2.connect(**params)
#         print("成功连接到数据库")
#         return connection
#     except Exception as e:
#         print(f"连接数据库失败: {e}")
#         return None

# def generate_query_prompt():
#     prompt = """
# 表结构描述：
# 1. aka_name 表：
#    - id：整数，非空，主键
#    - person_id：整数，非空
#    - name：可变字符类型
#    - imdb_index：可变字符类型(3)
#    - name_pcode_cf：可变字符类型(11)
#    - name_pcode_nf：可变字符类型(11)
#    - surname_pcode：可变字符类型(11)
#    - md5sum：可变字符类型(65)

# 2. aka_title 表：
#    - id：整数，非空，主键
#    - movie_id：整数，非空
#    - title：可变字符类型
#    - imdb_index：可变字符类型(4)
#    - kind_id：整数，非空
#    - production_year：整数
#    - phonetic_code：可变字符类型(5)
#    - episode_of_id：整数
#    - season_nr：整数
#    - episode_nr：整数
#    - note：可变字符类型(72)
#    - md5sum：可变字符类型(32)

# 3. cast_info 表：
#    - id：整数，非空，主键
#    - person_id：整数，非空
#    - movie_id：整数，非空
#    - person_role_id：整数
#    - note：可变字符类型
#    - nr_order：整数
#    - role_id：整数，非空

# 4. char_name 表：
#    - id：整数，非空，主键
#    - name：可变字符类型，非空
#    - imdb_index：可变字符类型(2)
#    - imdb_id：整数
#    - name_pcode_nf：可变字符类型(5)
#    - surname_pcode：可变字符类型(5)
#    - md5sum：可变字符类型(32)

# 5. comp_cast_type 表：
#    - id：整数，非空，主键
#    - kind：可变字符类型(32)，非空

# 6. company_name 表：
#    - id：整数，非空，主键
#    - name：可变字符类型，非空
#    - country_code：可变字符类型(6)
#    - imdb_id：整数
#    - name_pcode_nf：可变字符类型(5)
#    - name_pcode_sf：可变字符类型(5)
#    - md5sum：可变字符类型(32)

# 7. company_type 表：
#    - id：整数，非空，主键
#    - kind：可变字符类型(32)

# 8. complete_cast 表：
#    - id：整数，非空，主键
#    - movie_id：整数
#    - subject_id：整数，非空
#    - status_id：整数，非空

# 9. info_type 表：
#    - id：整数，非空，主键
#    - info：可变字符类型(32)，非空

# 10. keyword 表：
#     - id：整数，非空，主键
#     - keyword：可变字符类型，非空
#     - phonetic_code：可变字符类型(5)

# 11. kind_type 表：
#     - id：整数，非空，主键
#     - kind：可变字符类型(15)

# 12. link_type 表：
#     - id：整数，非空，主键
#     - link：可变字符类型(32)，非空

# 13. movie_companies 表：
#     - id：整数，非空，主键
#     - movie_id：整数，非空
#     - company_id：整数，非空
#     - company_type_id：整数，非空
#     - note：可变字符类型

# 14. movie_info_idx 表：
#     - id：整数，非空，主键
#     - movie_id：整数，非空
#     - info_type_id：整数，非空
#     - info：可变字符类型，非空
#     - note：可变字符类型(1)

# 15. movie_keyword 表：
#     - id：整数，非空，主键
#     - movie_id：整数，非空
#     - keyword_id：整数，非空

# 16. movie_link 表：
#     - id：整数，非空，主键
#     - movie_id：整数，非空
#     - linked_movie_id：整数，非空
#     - link_type_id：整数，非空

# 17. name 表：
#     - id：整数，非空，主键
#     - name：可变字符类型，非空
#     - imdb_index：可变字符类型(9)
#     - imdb_id：整数
#     - gender：可变字符类型(1)
#     - name_pcode_cf：可变字符类型(5)
#     - name_pcode_nf：可变字符类型(5)
#     - surname_pcode：可变字符类型(5)
#     - md5sum：可变字符类型(32)

# 18. role_type 表：
#     - id：整数，非空，主键
#     - role：可变字符类型(32)，非空

# 19. title 表：
#     - id：整数，非空，主键
#     - title：可变字符类型，非空
#     - imdb_index：可变字符类型(5)
#     - kind_id：整数，非空
#     - production_year：整数
#     - imdb_id：整数
#     - phonetic_code：可变字符类型(5)
#     - episode_of_id：整数
#     - season_nr：整数
#     - episode_nr：整数
#     - series_years：可变字符类型(49)
#     - md5sum：可变字符类型(32)

# 20. movie_info 表：
#     - id：整数，非空，主键
#     - movie_id：整数，非空
#     - info_type_id：整数，非空
#     - info：可变字符类型，非空
#     - note：可变字符类型

# 21. person_info 表：
#     - id：整数，非空，主键
#     - person_id：整数，非空
#     - info_type_id：整数，非空
#     - info：可变字符类型，非空
#     - note：可变字符类型

# 请批量生成大量的查询语句
# """
#     return prompt

# def save_queries_to_file(queries, file_path):
#     try:
#         with open(file_path, 'w', encoding='utf-8') as f:
#             for query in queries:
#                 f.write(query + ";\n")
#         print(f"查询语句已保存到 {file_path}")
#     except Exception as e:
#         print(f"保存查询语句失败: {e}")

# def generate_query(prompt):
#     response = client.chat.completions.create(
#         messages=[
#             {
#                 "role": "user", 
#                 "content": prompt
#             }
#         ],
#         model="gpt-3.5-turbo",
#     )
#     analysis = response['choices'][0]['message']['content']
#     return analysis

# def main():
#     # 连接到数据库
#     conn = connect_to_db(connection_params)

#     if conn:
#         # 创建模型 Prompt
#         prompt = generate_query_prompt()

#         # 批量生成查询语句
#         queries = []
#         for _ in range(100):  # 生成 100 条查询语句
#             query = generate_query(prompt)
#             if query:
#                 queries.append(query)

#         # 保存查询语句到文件
#         save_queries_to_file(queries, "D:\\database\\queries.sql")

#         # 使用 EXPLAIN 验证查询语句的正确性
#         with conn.cursor() as cursor:
#             for query in queries:
#                 try:
#                     cursor.execute(f"EXPLAIN {query}")
#                     print(f"查询语句正确: {query}")
#                 except Exception as e:
#                     print(f"查询语句错误: {query}\n错误信息: {e}")

#         # 关闭数据库连接
#         conn.close()

# if __name__ == "__main__":
#     main()
